#include <stdio.h>

int main(int argc, char const *argv[])
{
    if (argc != 2)
    {
        printf("Pls input: ./a.out <src file name>\n");
        return -1;
    }
    FILE *fp = fopen( argv[1], "r" );
    if( NULL == fp )
    {
        printf( "Fail to open file %s", argv[1] );
        return -1;
    }
    
    int ch, iCounter=0;
    while( ( ch = fgetc(fp) ) != EOF )
    {
        printf( "%c", ch );
        ++iCounter;
    }
    printf( "\nSuccess to fgetc #%d char from %s\n",iCounter, argv[1] );
    
    fclose(fp);

    return 0;
}

/*
原子操作--操作文件三部曲:
    1) fopen
    2) fgetc
    3) fclose

知识要点:
    在 fgetc 读取文件流指针 fp 时, 每次读取一个字符, fgetc 函数自动将文件读取位置向后挪一位.
    fgetc的返回值是 int 类型, 而非 char 型.
    这一类函数都把字符当做int类型来使用, 这样允许使用 -1 作为文件尾标识符 EOF

    ( 参考 <Linux程序设计>(第四版) P147 C语音编写的菜单例程 代码 )
    fgetc 也会捕捉到键盘输入的回车键, 在调用 fgetc 函数从 stdin 获取一个字符时, 可以这样滤掉回车键:
        do
        {
            iGet = getc(stdin);
        }while( iGet == '\n'); 
*/
